using System;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Numerics;
using Nethereum.Hex.HexTypes;
using Nethereum.ABI.FunctionEncoding.Attributes;
using Nethereum.RPC.Eth.DTOs;
using Nethereum.Contracts.CQS;
using Nethereum.Contracts;
using System.Threading;
using Nethereum.AccountAbstraction.Structs;

namespace Nethereum.AccountAbstraction.EntryPoint.ContractDefinition
{


    public partial class EntryPointDeployment : EntryPointDeploymentBase
    {
        public EntryPointDeployment() : base(BYTECODE) { }
        public EntryPointDeployment(string byteCode) : base(byteCode) { }
    }

    public class EntryPointDeploymentBase : ContractDeploymentMessage
    {
        public static string BYTECODE = "6101806040523461019557604051610018604082610199565b600781526020810190664552433433333760c81b82526040519161003d604084610199565b600183526020830191603160f81b8352610056816101bc565b6101205261006384610357565b61014052519020918260e05251902080610100524660a0526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a081526100cc60c082610199565b5190206080523060c0526040516103b88082016001600160401b0381118382101761018157829161428a833903905ff080156101765761016052604051613dfa908161049082396080518161269a015260a05181612757015260c05181612664015260e051816126e90152610100518161270f015261012051816112330152610140518161125c0152610160518181816110f7015281816117e601528181613a620152613cdc0152f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b601f909101601f19168101906001600160401b0382119082101761018157604052565b908151602081105f14610236575090601f8151116101f65760208151910151602082106101e7571790565b5f198260200360031b1b161790565b604460209160405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b6001600160401b03811161018157600254600181811c9116801561034d575b602082101461033957601f8111610306575b50602092601f82116001146102a557928192935f9261029a575b50508160011b915f199060031b1c19161760025560ff90565b015190505f80610281565b601f1982169360025f52805f20915f5b8681106102ee57508360019596106102d6575b505050811b0160025560ff90565b01515f1960f88460031b161c191690555f80806102c8565b919260206001819286850151815501940192016102b5565b60025f52601f60205f20910160051c810190601f830160051c015b81811061032e5750610267565b5f8155600101610321565b634e487b7160e01b5f52602260045260245ffd5b90607f1690610255565b908151602081105f14610382575090601f8151116101f65760208151910151602082106101e7571790565b6001600160401b03811161018157600354600181811c91168015610485575b602082101461033957601f8111610452575b50602092601f82116001146103f157928192935f926103e6575b50508160011b915f199060031b1c19161760035560ff90565b015190505f806103cd565b601f1982169360035f52805f20915f5b86811061043a5750836001959610610422575b505050811b0160035560ff90565b01515f1960f88460031b161c191690555f8080610414565b91926020600181928685015181550194019201610401565b60035f52601f60205f20910160051c810190601f830160051c015b81811061047a57506103b3565b5f815560010161046d565b90607f16906103a156fe6101806040526004361015610024575b3615610019575f80fd5b61002233612444565b005b5f610140525f3560e01c806242dc5314611b1b57806301ffc9a714611a7d5780630396cb601461181557806309ccb880146117ce5780630bd28e3b1461177357806313c65a6e14611756578063154e58dc146117195780631b2e01b8146116c1578063205c28781461159557806322cdde4c1461154e57806335567e1a146114e95780635287ce12146113fc57806370a08231146113bc578063765e827f1461131e57806384b0196e14611218578063850aaf621461118c5780639b249f6914611090578063b760faf91461106d578063bb9fe6bf14610f29578063c23a5cea14610d495763dbed18e00361000f5734610b8d57610121366120d2565b6101005260e0526101306128d1565b6101405190815b60e0518110610bd9575061014a82612308565b61012052610140516080526101405160c0525b60e05160c0511061028e577fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f9726101405161014051a161014051608081905290815b60e05181106101e1576101b48361010051613568565b610140517f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d6101405180f35b6102366101f18260e0518561249d565b6001600160a01b03610205602083016124f4565b167f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d6101405161014051a2806124bf565b9061014051915b80831061024f5750505060010161019e565b90919460019061027c6102638885876123ba565b610272608051610120516123f1565b51906080516131d4565b0195816080510160805201919061023d565b61029d60c05160e0518361249d565b6102a781806124bf565b60a052906001600160a01b03906102c0906020016124f4565b61014051911691905b60a05181106102ed5750505060a05160805101608052600160c0510160c05261015d565b6102fe8160805101610120516123f1565b5161030c8260a051856123ba565b61014051915a8151926001600160a01b03610326826124f4565b168452602081810135908501526001600160801b036080808301358281166060880152811c604087015260a083013560c0808801919091528301359182166101008701521c61012085015261037e60e0820182612508565b9081610af9575b505060405193610394826121e1565b6020850152846040526040810151946001600160781b038660c08401511760608401511760808401511760a084015117610100840151176101208401511711610ab15750604081015160608201510160808201510160a08201510160c0820151016101008201510294856040860152845160018060a01b038151169061042c6104206040870187612508565b90898d608051016139f1565b60e001516101405197906001600160a01b03168015610a80575b8751604080820151915190516020808c01516306608bdf60e21b918301918252919c6001600160a01b03909316939290918d91610487918c60248501613d7e565b03601f1981018d52610499908d612007565b61014051908c5190846101405190602095f161014051519a3d602003610a75575b604052156109c7575015610968575b505060018060a01b03825116602083015190610140515260016020526040610140512060018060c01b038260401c165f526020526001600160401b0360405f209182549261051684612197565b90551603610918575a8403116108c85760e001516060906001600160a01b03166106c3575b606084015261055a93929160809160a00135905a90030191015261395c565b906001600160a01b0316850361067c57610632576105779061395c565b906001600160a01b03166105eb57610591576001016102c9565b60408051631101335b60e11b815260805190920160048301526024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f742064756064820152606560f81b608482015260a490fd5b60848260405190631101335b60e11b825260805101600482015260406024820152601460448201527320a0999a1039b4b3b730ba3ab9329032b93937b960611b6064820152fd5b60848260405190631101335b60e11b8252608051016004820152604060248201526017604482015276414132322065787069726564206f72206e6f742064756560481b6064820152fd5b60848360405190631101335b60e11b825260805101600482015260406024820152601460448201527320a0991a1039b4b3b730ba3ab9329032b93937b960611b6064820152fd5b94505a835160e081015160408601519297926106e7916001600160a01b0316613da0565b156108785760800151956040519660208601519761072f8161072160408a0151602083019c8d6314add44b60e21b90528960248501613d7e565b03601f198101835282612007565b8651608060018060a01b0360e08301511691015161014051918b61014051928551926101405191f1983d908161014051843e51948251604084019b8c51901591821561086c575b50811561085a575b506107fe5750601f01601f1916016040819052915a9003116107a157509461053b565b631101335b60e11b81526080518801600482015260406024820152602760448201527f41413336206f766572207061796d6173746572566572696669636174696f6e47606482015266185cd31a5b5a5d60ca1b608482015260a490fd5b8b61085661080a612634565b6040519384936365c8fd4d60e01b85526080510160048501526024840152600d60648401526c10504cccc81c995d995c9d1959609a1b608484015260a0604484015260a4830190612138565b0390fd5b9050601f605f1984019101105f61077e565b6040141591505f610776565b60848860405190631101335b60e11b825260805101600482015260406024820152601e60448201527f41413331207061796d6173746572206465706f73697420746f6f206c6f7700006064820152fd5b60848760405190631101335b60e11b825260805101600482015260406024820152601e60448201527f41413236206f76657220766572696669636174696f6e4761734c696d697400006064820152fd5b60848860405190631101335b60e11b825260805101600482015260406024820152601a60448201527f4141323520696e76616c6964206163636f756e74206e6f6e63650000000000006064820152fd5b61097191613da0565b1561097d578b806104c9565b60848860405190631101335b60e11b825260805101600482015260406024820152601760448201527610504c8c48191a591b89dd081c185e481c1c99599d5b99604a1b6064820152fd5b8b903b610a1a5760408051631101335b60e11b815260805190920160048301526024820152601960448201527810504c8c081858d8dbdd5b9d081b9bdd0819195c1b1bde5959603a1b6064820152608490fd5b610a22612634565b6040516365c8fd4d60e01b8152608051909201600483015260606024830152600d60648301526c10504c8cc81c995d995c9d1959609a1b608483015260a0604483015281906108569060a4830190612138565b6101405191506104ba565b6101408051849052516020819052604090205490985081811115610aaa5750610140515b97610446565b8103610aa4565b631101335b60e11b81526080518801600482015260406024820152601860448201527741413934206761732076616c756573206f766572666c6f7760401b6064820152608490fd5b60348210610b945781601411610b8d5780359160248110610b8d57603411610b8d576024810135608090811c60a0880152601490910135811c90860152606081901c15610b4f5760601c60e08501528980610385565b60405162461bcd60e51b815260206004820152601660248201527520a09c9c1034b73b30b634b2103830bcb6b0b9ba32b960511b6044820152606490fd5b6101405180fd5b60405162461bcd60e51b815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152606490fd5b610be68160e0518461249d565b92610bf184806124bf565b91906001600160a01b03610c07602088016124f4565b169560018714610d305786610c24575b5050019250600101610137565b806040610c32920190612508565b91873b15610b8d5791604051928391632dd8113360e01b835286604484016040600486015252606483019160648860051b85010192816101405161011e1982360301915b8b8210610cf45750505050508291610c9e916003198483030160248501526101405195612424565b0381610140518a5af19081610cd9575b50610ccc578463086a9f7560e41b6101405152600452602461014051fd5b929350839260015f610c17565b61014051610ce691612007565b61014051610b8d575f610cae565b91939650919394606319898203018552863584811215610b8d576020610d1f6001938583940161256b565b980195019201889695949391610c76565b8663086a9f7560e41b6101405152600452602461014051fd5b34610b8d576020366003190112610b8d57610d62612079565b3361014051526101405160205260016040610140512001908154916001600160701b038360081c16928315610eed5760981c65ffffffffffff168015610ea8574210610e63578054610100600160c81b0319169055604080516001600160a01b03831681526020810184905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda391a261014051918291829182916001600160a01b03165af1610e116121b2565b5015610e1e576101405180f35b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152606490fd5b60405162461bcd60e51b81526020600482015260146024820152734e6f207374616b6520746f20776974686472617760601b6044820152606490fd5b34610b8d5761014051366003190112610b8d573361014051526101405160205260016040610140512001805463ffffffff8160781c1690811561103b5760ff16156110025765ffffffffffff4216019065ffffffffffff8211610fe857805460ff65ffffffffffff60981b01191665ffffffffffff60981b609884901b1617905560405165ffffffffffff909116815233907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a90602090a26101405180f35b634e487b7160e01b61014051526011600452602461014051fd5b60405162461bcd60e51b8152602060048201526011602482015270616c726561647920756e7374616b696e6760781b6044820152606490fd5b60405162461bcd60e51b815260206004820152600a6024820152691b9bdd081cdd185ad95960b21b6044820152606490fd5b6020366003190112610b8d57611089611084612079565b612444565b6101405180f35b34610b8d576020366003190112610b8d576004356001600160401b038111610b8d5760206110c56110e892369060040161208f565b604051632b870d1b60e11b81526004810184905293849283926024840191612424565b03816101405160018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af190811561117e57610140519161114f575b506101408051633653dc0360e11b90526001600160a01b039190911660045251602490fd5b611171915060203d602011611177575b6111698183612007565b810190612405565b8161112a565b503d61115f565b6040513d61014051823e3d90fd5b34610b8d576040366003190112610b8d576111a5612079565b6024356001600160401b038111610b8d576111c490369060040161208f565b604051929181908437820190610140518252610140519280610140519303915af46111ed6121b2565b60408051632650415560e21b8152921515600484015260248301528190610856906044830190612138565b34610b8d5761014051366003190112610b8d576112bc6112577f0000000000000000000000000000000000000000000000000000000000000000613766565b6112807f000000000000000000000000000000000000000000000000000000000000000061388c565b604051906020906112ca906112958385612007565b6101405184525f368137604051958695600f60f81b875260e08588015260e0870190612138565b908582036040870152612138565b4660608501523060808501526101405160a085015283810360c0850152818084519283815201930191610140515b82811061130757505050500390f35b8351855286955093810193928101926001016112f8565b34610b8d5761132c366120d2565b6113379291926128d1565b61134083612308565b61134b81858561292c565b5061014051927fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f9728480a161014051915b85831061138c576101b48585613568565b9091936001906113b26113a08789876123ba565b6113aa88866123f1565b5190886131d4565b019401919061137b565b34610b8d576020366003190112610b8d576001600160a01b036113dd612079565b1661014051526101405160205260206040610140512054604051908152f35b34610b8d576020366003190112610b8d57611415612079565b60405161142181611fa1565b61014051815261014051602082015261014051604082015261014051606082015260806101405191015260018060a01b031661014051526101405160205260a06040610140512065ffffffffffff60405161147b81611fa1565b63ffffffff60018454948584520154916001600160701b036020820160ff8516151581526040830190828660081c1682528660806060860195878960781c168752019660981c1686526040519788525115156020880152511660408601525116606084015251166080820152f35b34610b8d576040366003190112610b8d576020611504612079565b61150c6120bc565b9060018060a01b03166101405152600182526040610140512060018060c01b0382165f52825260405f2054604051916001600160401b03199060401b16178152f35b34610b8d576020366003190112610b8d576004356001600160401b038111610b8d576101206003198236030112610b8d5761158d6020916004016121e1565b604051908152f35b34610b8d576040366003190112610b8d576115ae612079565b602435903361014051526101405160205260406101405120805480841161167c57836115d9916121a5565b9055604080516001600160a01b03831681526020810184905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb91a261014051918291829182916001600160a01b03165af16116356121b2565b5015611642576101405180f35b60405162461bcd60e51b81526020600482015260126024820152716661696c656420746f20776974686472617760701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152606490fd5b34610b8d576040366003190112610b8d576116da612079565b6116e26120bc565b9060018060a01b031661014051526001602052604061014051209060018060c01b03165f52602052602060405f2054604051908152f35b34610b8d5761014051366003190112610b8d5760206040517f29a0bca4af4be3421398da00295e58e6d7de38cb492214754cb6a47507dd6f8e8152f35b34610b8d5761014051366003190112610b8d57602061158d612661565b34610b8d576020366003190112610b8d576004356001600160c01b0381168103610b8d573361014051526001602052604061014051209060018060c01b03165f5260205260405f206117c58154612197565b90556101405180f35b34610b8d5761014051366003190112610b8d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6020366003190112610b8d5760043563ffffffff8116809103610b8d573361014051526101405160205260406101405120908015611a3857600182015463ffffffff8160781c1682106119f357611879906001600160701b03349160081c16612176565b9182156119b9576001600160701b038311611983575460405161194b9161189f82611fa1565b8152600160208083018281526001600160701b0387166040808601918252606086018881526101408051608089019081528151339052905195869052919094209551865591519490930180549351925191516001600160c81b031990941660ff951515959095169490941760089290921b6effffffffffffffffffffffffffff00169190911760789190911b63ffffffff60781b161760989190911b65ffffffffffff60981b16179055565b60405191825260208201527fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c0160403392a26101405180f35b60405162461bcd60e51b815260206004820152600e60248201526d7374616b65206f766572666c6f7760901b6044820152606490fd5b60405162461bcd60e51b81526020600482015260126024820152711b9bc81cdd185ad9481cdc1958da599a595960721b6044820152606490fd5b60405162461bcd60e51b815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152606490fd5b34610b8d576020366003190112610b8d5760043563ffffffff60e01b8116809103610b8d5760209063349869f760e11b8114908115611b0a575b8115611af9575b8115611ae8575b8115611ad7575b506040519015158152f35b6301ffc9a760e01b14905082611acc565b633e84f02160e01b81149150611ac5565b63cf28ef9760e01b81149150611abe565b631313998b60e31b81149150611ab7565b34611e8f57610200366003190112611e8f576004356001600160401b038111611e8f5736602382011215611e8f57611b5d903690602481600401359101612043565b36602319016101c08112611e8f5761014060405191611b7b83611fa1565b12611e8f57604051611b8c81611fd0565b6024356001600160a01b0381168103611e8f57815260443560208201526064356040820152608435606082015260a435608082015260c43560a082015260e43560c0820152610104356001600160a01b0381168103611e8f5760e082015261012435610100820152610144356101208201528152602081019161016435835260408201906101843582526101a435606084015260808301916101c43583526101e4356001600160401b038111611e8f57611c4a90369060040161208f565b955a90303303611f5c578651606081015195603f5a0260061c61271060a084015189010111611f4d575f9681519182611eaf575b505050505090611c96915a9003855101963691612043565b925a93855161010081015161012082015148018082105f14611ea75750975b611cd460018060a01b0360e08401511694518203606084015190613619565b01925f9281611d9d575050516001600160a01b0316945b5a900301019485029051928184105f14611d575750506003811015611d3d57600203611d28576020928161158d9293611d2381613702565b613638565b63deadaa5160e01b6101405152602061014051fd5b634e487b7160e01b61014051526021600452602461014051fd5b81611d7f929594969396039060018060a01b03165f525f60205260405f209081540180915590565b506003841015611d3d5782611d9892602095159061369d565b61158d565b909691878251611db0575b505050611ceb565b90919293505a926003881015611e935760028803611de6575b505060a0611ddd925a900391015190613619565b90888080611da8565b60a083015191803b15611e8f578b925f9283611e29938c8b88604051998a9889978895637c627b2160e01b87526004870152608060248701526084860190612138565b9202604484015260648301520393f19081611e7a575b50611e7057610856611e4f612634565b604051632b5e552f60e21b8152602060048201529182916024830190612138565b60a0611ddd611dc9565b5f611e8491612007565b5f610140528a611e3f565b5f80fd5b634e487b7160e01b5f52602160045260245ffd5b905097611cb5565b915f9291838093602060018060a01b03885116910192f115611ed4575b808080611c7e565b611c969392955060405191611ee7612634565b908151611f00575b505050604052600193909188611ecc565b7f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a201905191602060018060a01b03855116940151611f426040519283928361215c565b0390a3888080611eef565b63deaddead60e01b5f5260205ffd5b60405162461bcd60e51b815260206004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c790000000000000000006044820152606490fd5b60a081019081106001600160401b03821117611fbc57604052565b634e487b7160e01b5f52604160045260245ffd5b61014081019081106001600160401b03821117611fbc57604052565b606081019081106001600160401b03821117611fbc57604052565b90601f801991011681019081106001600160401b03821117611fbc57604052565b6001600160401b038111611fbc57601f01601f191660200190565b92919261204f82612028565b9161205d6040519384612007565b829481845281830111611e8f578281602093845f960137010152565b600435906001600160a01b0382168203611e8f57565b9181601f84011215611e8f578235916001600160401b038311611e8f5760208381860195010111611e8f57565b602435906001600160c01b0382168203611e8f57565b906040600319830112611e8f576004356001600160401b038111611e8f5760040182601f82011215611e8f578035926001600160401b038411611e8f576020808301928560051b010111611e8f5791906024356001600160a01b0381168103611e8f5790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b604090612173939281528160208201520190612138565b90565b9190820180921161218357565b634e487b7160e01b5f52601160045260245ffd5b5f1981146121835760010190565b9190820391821161218357565b3d156121dc573d906121c382612028565b916121d16040519384612007565b82523d5f602084013e565b606090565b6042906121ed8161277d565b6121f5612661565b916121ff816124f4565b9180156122d457905b60c06122176060830183612508565b9081604051918237209161222e60e0820182612508565b908160405191823720926040519460208601967f29a0bca4af4be3421398da00295e58e6d7de38cb492214754cb6a47507dd6f8e885260018060a01b0316604087015260208301356060870152608086015260a085015260808101358285015260a081013560e0850152013561010083015261012082015261012081526122b761014082612007565b5190206040519161190160f01b8352600283015260228201522090565b506122e26040820182612508565b90816040519182372090612208565b6001600160401b038111611fbc5760051b60200190565b90612312826122f1565b61231f6040519182612007565b8281528092612330601f19916122f1565b01905f5b82811061234057505050565b60209060405161234f81611fa1565b60405161235b81611fd0565b5f81525f848201525f60408201525f60608201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201525f61012082015281525f838201525f60408201525f60608201525f608082015282828501015201612334565b91908110156123dd5760051b8101359061011e1981360301821215611e8f570190565b634e487b7160e01b5f52603260045260245ffd5b80518210156123dd5760209160051b010190565b90816020910312611e8f57516001600160a01b0381168103611e8f5790565b908060209392818452848401375f828201840152601f01601f1916010190565b7f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c46020612488348460018060a01b03165f525f60205260405f209081540180915590565b6040519081526001600160a01b0390931692a2565b91908110156123dd5760051b81013590605e1981360301821215611e8f570190565b903590601e1981360301821215611e8f57018035906001600160401b038211611e8f57602001918160051b36038313611e8f57565b356001600160a01b0381168103611e8f5790565b903590601e1981360301821215611e8f57018035906001600160401b038211611e8f57602001918136038313611e8f57565b9035601e1982360301811215611e8f5701602081359101916001600160401b038211611e8f578136038313611e8f57565b8035916001600160a01b0383168303611e8f576001600160a01b03909216825260208181013590830152612173916126256126196125e06125c56125b2604087018761253a565b6101206040880152610120870191612424565b6125d2606087018761253a565b908683036060880152612424565b6080850135608085015260a085013560a085015260c085013560c085015261260b60e086018661253a565b9085830360e0870152612424565b9261010081019061253a565b91610100818503910152612424565b3d6108008111612658575b604051906020818301016040528082525f602083013e90565b5061080061263f565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612754575b156126bc577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261274e60c082612007565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612693565b61278a6040820182612508565b90916127968284613744565b156128ca576127a4906124f4565b60175f80833c5f51906110ff60f01b6001600160e81b0319831601612845575060181b91601482116127f85750506040516001600160601b031990911660208201908152601482529061274e603482612007565b81601411611e8f576040516001600160601b0319909316602084810191825290939261274e92849190601319820190601401603484013781015f838201520301601f198101835282612007565b3b156128905760405162461bcd60e51b815260206004820152601860248201527f6e6f7420616e204549502d373730322064656c656761746500000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601260248201527173656e64657220686173206e6f20636f646560701b6044820152606490fd5b5050505f90565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c61291d5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d565b633ee5aeb560e01b5f5260045ffd5b92919092835f5b8181106129405750505050565b61294a81856123f1565b516129568284866123ba565b5f915a8151906001600160a01b0361296d856124f4565b1682526020820191602085013583526080850135946001600160801b038660801c961693604083019660608401958652875260a08201359460c0840186815260c0840135906001600160801b038260801c921691610120870190610100880193845281526129de60e0870187612508565b90816130d8575b50506040516129f3876121e1565b9460208c01958652816040528c519c8d855117825117926001600160781b0360808c01948551179560a08d0196875117895117905117116130915750519051019051019051019051019051029760408801928984528b8951612a6f8b60018060a01b0383511693612a6760408b018b612508565b9290916139f1565b60e001515f9b906001600160a01b0316801561306a575b8b519c60408e01519d600160a01b600190039051169d8e916040516101605288518b61016051602001926306608bdf60e21b845261016051926101605160240192612ad093613d7e565b03601f19810161016051526101605190612ae991612007565b6101605151905f6020948194f19c5f519d3d602003613063575b6101605160405215612fbe575015612f63575b5050855190516001600160a01b039091165f90815260016020908152604080832084821c845290915290208054916001600160401b0391612b5684612197565b90551603612f17575a860311612ecb5760e090930151606093906001600160a01b0316612cf2575b5050506060840152612b9b9392916080915a90030191015261395c565b906001600160a01b0316612caf57612c6957612bb69061395c565b906001600160a01b0316612c2657612bd057600101612933565b60a49060405190631101335b60e11b8252600482015260406024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f742064756064820152606560f81b6084820152fd5b60848260405190631101335b60e11b8252600482015260406024820152601460448201527320a0999a1039b4b3b730ba3ab9329032b93937b960611b6064820152fd5b60848260405190631101335b60e11b82526004820152604060248201526017604482015276414132322065787069726564206f72206e6f742064756560481b6064820152fd5b60848360405190631101335b60e11b8252600482015260406024820152601460448201527320a0991a1039b4b3b730ba3ab9329032b93937b960611b6064820152fd5b909197505a865160e08101518451929492612d15916001600160a01b0316613da0565b15612e7f576080612d499101519261072160405193849251905190602084019d8e6314add44b60e21b905260248501613d7e565b5f8088518b82608060018060a01b0360e08501511693015192865193f1983d90815f843e51948251604084019b8c519015918215612e73575b508115612e61575b50612e0d5750601f01601f1916016040819052915a900311612db357509481612b9b6080612b7e565b631101335b60e11b81526004810188905260406024820152602760448201527f41413336206f766572207061796d6173746572566572696669636174696f6e47606482015266185cd31a5b5a5d60ca1b608482015260a490fd5b8b610856612e19612634565b6040519384936365c8fd4d60e01b855260048501526024840152600d60648401526c10504cccc81c995d995c9d1959609a1b608484015260a0604484015260a4830190612138565b9050601f605f1984019101105f612d8a565b6040141591505f612d82565b60848b60405190631101335b60e11b8252600482015260406024820152601e60448201527f41413331207061796d6173746572206465706f73697420746f6f206c6f7700006064820152fd5b60848a60405190631101335b60e11b8252600482015260406024820152601e60448201527f41413236206f76657220766572696669636174696f6e4761734c696d697400006064820152fd5b60848b60405190631101335b60e11b8252600482015260406024820152601a60448201527f4141323520696e76616c6964206163636f756e74206e6f6e63650000000000006064820152fd5b612f6c91613da0565b15612f78575f80612b16565b60848c60405190631101335b60e11b8252600482015260406024820152601760448201527610504c8c48191a591b89dd081c185e481c1c99599d5b99604a1b6064820152fd5b8f903b61300d5760849060405190631101335b60e11b8252600482015260406024820152601960448201527810504c8c081858d8dbdd5b9d081b9bdd0819195c1b1bde5959603a1b6064820152fd5b613015612634565b906108566040519283926365c8fd4d60e01b8452600484015260606024840152600d60648401526c10504c8cc81c995d995c9d1959609a1b608484015260a0604484015260a4830190612138565b505f612b03565b9b50815f525f60205260405f20548181115f1461308a57505f5b9b612a86565b8103613084565b90508f60849250631101335b60e11b8252600482015260406024820152601860448201527741413934206761732076616c756573206f766572666c6f7760401b6064820152fd5b60348210610b945781601411611e8f57803560601c9160248110611e8f57601482013590603411611e8f576001600160801b0360248193013560801c1660a08b015260801c1660808901528015610b4f5760e08801525f806129e5565b60806101a091610120815160018060a01b038151168652602081015160208701526040810151604087015260608101516060870152838101518487015260a081015160a087015260c081015160c087015260018060a01b0360e08201511660e087015261010081015161010087015201516101208501526020810151610140850152604081015161016085015260608101516101808501520151910152565b9092915a606082015160405195866131ef6060830183612508565b5f60038211613560575b6001600160e01b031916638dd7712f60e01b036134fd575050505f6132856132a561324a61325e602095868a0151604051938492638dd7712f60e01b8a85015260406024850152606484019061256b565b90604483015203601f198101835282612007565b6107216040519384926242dc5360e01b888501526102006024850152610224840190612138565b613292604484018b613135565b8281036023190161020484015287612138565b828151910182305af15f5196604052156132c0575b50505050565b9091929394505f3d6020146134f0575b63deaddead60e01b810361331c5760848560405190631101335b60e11b8252600482015260406024820152600f60448201526e41413935206f7574206f662067617360881b6064820152fd5b929350909163deadaa5160e01b03613366575061334b61334061335b925a906121a5565b608084015190612176565b604083015183611d238295613702565b905b5f8080806132ba565b906133cb9060405160208501518551907ff62676f440ff169a3a9afdbf812e89e7f95975ee8e5c31214ffdef631c5f4792602060018060a01b038451169301516133ae612634565b906133be6040519283928361215c565b0390a36040525a906121a5565b6133db6080840191825190612176565b915f905a92855161010081015161012082015148018082105f146134e85750955b61341b60018060a01b0360e08401511693518203606084015190613619565b01925f92806134b9575050516001600160a01b0316935b5a900301019283026040850151928184105f1461347b57505080613467575090816134619293611d2381613702565b9061335d565b634e487b7160e01b81526021600452602490fd5b6134a2908284939795039060018060a01b03165f525f60205260405f209081540180915590565b50613467575090825f6134b49361369d565b613461565b959190516134c8575b50613432565b935090506134e15a9360a05f955a900391015190613619565b905f6134c2565b9050956133fc565b5060205f803e5f516132d0565b6242dc5360e01b6020840152610200602484015261355793506135499161352991610224850191612424565b6135366044840188613135565b8281036023190161020484015284612138565b03601f198101885287612007565b60205f876132a5565b5081356131f9565b6001600160a01b031680156135d4575f80809381935af16135876121b2565b501561358f57565b60405162461bcd60e51b815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152606490fd5b90619c40820181111561363257606491600a9103020490565b50505f90565b9190917f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f6080602083015192519460018060a01b0386511694602060018060a01b0360e089015116970151916040519283525f602084015260408301526060820152a4565b9060807f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f91602084015193519560018060a01b0387511695602060018060a01b0360e08a015116980151926040519384521515602084015260408301526060820152a4565b60208101519051907f67b4fa9642f42120bf031f3051d1824b0fe25627945b27b8a6a65d5761d5482e60208060018060a01b03855116940151604051908152a3565b9060021161376157356001600160601b031916613b8160f11b1490565b505f90565b60ff81146137ac5760ff811690601f821161379d576040519161378a604084612007565b6020808452838101919036833783525290565b632cd44ac360e21b5f5260045ffd5b506040515f6002548060011c9160018216918215613882575b60208410831461386e57838552849290811561384f57506001146137f0575b61217392500382612007565b5060025f90815290917f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5b818310613833575050906020612173928201016137e4565b602091935080600191548385880101520191019091839261381b565b6020925061217394915060ff191682840152151560051b8201016137e4565b634e487b7160e01b5f52602260045260245ffd5b92607f16926137c5565b60ff81146138b05760ff811690601f821161379d576040519161378a604084612007565b506040515f6003548060011c9160018216918215613952575b60208410831461386e57838552849290811561384f57506001146138f35761217392500382612007565b5060035f90815290917fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b818310613936575050906020612173928201016137e4565b602091935080600191548385880101520191019091839261391e565b92607f16926138c9565b80156139ea575f6040805161397081611fec565b8281526020810183905201526001600160a01b0381169060a081901c65ffffffffffff169081156139dc575b60409060d01c9165ffffffffffff8251916139b683611fec565b85835284602084015216918291015242119081156139d357509091565b90504211159091565b65ffffffffffff915061399c565b505f905f90565b929190915f9080613a04575b5050505050565b835180516001600160a01b03169590613a1d8386613744565b613cbf5750853b613c735760148210613c275760408551015160206040518092632b870d1b60e11b8252826004830152818781613a5e602482018a8d612424565b03927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690f1908115613c1c578491613bfd575b506001600160a01b0381168015613bb1578703613b65573b15613b195750601411613b165750602082810151925160e0015160408051933560601c84526001600160a01b03909116918301919091527fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d91a35f808080806139fd565b80fd5b60849060405190631101335b60e11b8252600482015260406024820152602060448201527f4141313520696e6974436f6465206d757374206372656174652073656e6465726064820152fd5b60848260405190631101335b60e11b8252600482015260406024820152602060448201527f4141313420696e6974436f6465206d7573742072657475726e2073656e6465726064820152fd5b60848360405190631101335b60e11b8252600482015260406024820152601b60448201527f4141313320696e6974436f6465206661696c6564206f72204f4f4700000000006064820152fd5b613c16915060203d602011611177576111698183612007565b5f613a9a565b6040513d86823e3d90fd5b60849060405190631101335b60e11b8252600482015260406024820152601760448201527f4141393920696e6974436f646520746f6f20736d616c6c0000000000000000006064820152fd5b60849060405190631101335b60e11b8252600482015260406024820152601f60448201527f414131302073656e64657220616c726561647920636f6e7374727563746564006064820152fd5b94505091905060148211613cd35750505050565b604092909201517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169260148310611e8f57833b15611e8f575f8094613d4d966040519788968795869363c09ad0d960e01b855260048501526040602485015260146044850192601319019101612424565b0393f18015613d7357613d63575b8080806132ba565b5f613d6d91612007565b5f613d5b565b6040513d5f823e3d90fd5b613d966040929594939560608352606083019061256b565b9460208201520152565b60018060a01b03165f525f60205260405f209081548181106128ca5703905560019056fea264697066735822122045f0913767b473c2868211ca1370d80341ed4d6ecb60f04f1da009ab7ef6a9d564736f6c634300081d003360a08060405234602f57336080526103849081610034823960805181818160990152818161019101526102170152f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8063570e1a36146101c0578063b0d691fe1461017c5763c09ad0d91461003a575f80fd5b34610178576040366003190112610178576004356001600160a01b03811681036101785760243567ffffffffffffffff81116101785736602382011215610178575f9161009283923690602481600401359101610297565b906100c7337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610303565b82602083519301915af1156100d857005b3d610800811161016f575b60c460405160208382010160405282815260208101925f843e6040519283916365c8fd4d60e01b83525f600484015260606024840152601f60648401527f4141313320454950373730322073656e64657220696e6974206661696c656400608484015260a060448401525180918160a48501528484015e5f828201840152601f01601f19168101030190fd5b506108006100e3565b5f80fd5b34610178575f366003190112610178576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101785760203660031901126101785760043567ffffffffffffffff811161017857366023820112156101785780600401359067ffffffffffffffff8211610178573660248383010111610178575f91610245337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610303565b80601411610178576020916102645f9236906013190160388401610297565b90826024858451940192013560601c5af161028f575b6040516001600160a01b039091168152602090f35b505f5161027a565b92919267ffffffffffffffff82116102ef5760405191601f8101601f19908116603f0116830167ffffffffffffffff8111848210176102ef57604052829481845281830111610178578281602093845f960137010152565b634e487b7160e01b5f52604160045260245ffd5b1561030a57565b606460405162461bcd60e51b815260206004820152602060248201527f414139372073686f756c642063616c6c2066726f6d20456e747279506f696e746044820152fdfea26469706673582212207ee2e2e4876262406af59b0affaf2ec6f63da1c8a5ee0544ba395dfa4b3aa84564736f6c634300081d0033";
        public EntryPointDeploymentBase() : base(BYTECODE) { }
        public EntryPointDeploymentBase(string byteCode) : base(byteCode) { }

    }

    public partial class AddStakeFunction : AddStakeFunctionBase { }

    [Function("addStake")]
    public class AddStakeFunctionBase : FunctionMessage
    {
        [Parameter("uint32", "unstakeDelaySec", 1)]
        public virtual uint UnstakeDelaySec { get; set; }
    }

    public partial class BalanceOfFunction : BalanceOfFunctionBase { }

    [Function("balanceOf", "uint256")]
    public class BalanceOfFunctionBase : FunctionMessage
    {
        [Parameter("address", "account", 1)]
        public virtual string Account { get; set; }
    }

    public partial class DelegateAndRevertFunction : DelegateAndRevertFunctionBase { }

    [Function("delegateAndRevert")]
    public class DelegateAndRevertFunctionBase : FunctionMessage
    {
        [Parameter("address", "target", 1)]
        public virtual string Target { get; set; }
        [Parameter("bytes", "data", 2)]
        public virtual byte[] Data { get; set; }
    }

    public partial class DepositToFunction : DepositToFunctionBase { }

    [Function("depositTo")]
    public class DepositToFunctionBase : FunctionMessage
    {
        [Parameter("address", "account", 1)]
        public virtual string Account { get; set; }
    }

    public partial class Eip712DomainFunction : Eip712DomainFunctionBase { }

    [Function("eip712Domain", typeof(Eip712DomainOutputDTO))]
    public class Eip712DomainFunctionBase : FunctionMessage
    {

    }

    public partial class GetDepositInfoFunction : GetDepositInfoFunctionBase { }

    [Function("getDepositInfo", typeof(GetDepositInfoOutputDTO))]
    public class GetDepositInfoFunctionBase : FunctionMessage
    {
        [Parameter("address", "account", 1)]
        public virtual string Account { get; set; }
    }

    public partial class GetDomainSeparatorV4Function : GetDomainSeparatorV4FunctionBase { }

    [Function("getDomainSeparatorV4", "bytes32")]
    public class GetDomainSeparatorV4FunctionBase : FunctionMessage
    {

    }

    public partial class GetNonceFunction : GetNonceFunctionBase { }

    [Function("getNonce", "uint256")]
    public class GetNonceFunctionBase : FunctionMessage
    {
        [Parameter("address", "sender", 1)]
        public virtual string Sender { get; set; }
        [Parameter("uint192", "key", 2)]
        public virtual BigInteger Key { get; set; }
    }

    public partial class GetPackedUserOpTypeHashFunction : GetPackedUserOpTypeHashFunctionBase { }

    [Function("getPackedUserOpTypeHash", "bytes32")]
    public class GetPackedUserOpTypeHashFunctionBase : FunctionMessage
    {

    }

    public partial class GetSenderAddressFunction : GetSenderAddressFunctionBase { }

    [Function("getSenderAddress")]
    public class GetSenderAddressFunctionBase : FunctionMessage
    {
        [Parameter("bytes", "initCode", 1)]
        public virtual byte[] InitCode { get; set; }
    }

    public partial class GetUserOpHashFunction : GetUserOpHashFunctionBase { }

    [Function("getUserOpHash", "bytes32")]
    public class GetUserOpHashFunctionBase : FunctionMessage
    {
        [Parameter("tuple", "userOp", 1)]
        public virtual PackedUserOperation UserOp { get; set; }
    }

    public partial class HandleAggregatedOpsFunction : HandleAggregatedOpsFunctionBase { }

    [Function("handleAggregatedOps")]
    public class HandleAggregatedOpsFunctionBase : FunctionMessage
    {
        [Parameter("tuple[]", "opsPerAggregator", 1)]
        public virtual List<UserOpsPerAggregator> OpsPerAggregator { get; set; }
        [Parameter("address", "beneficiary", 2)]
        public virtual string Beneficiary { get; set; }
    }

    public partial class HandleOpsFunction : HandleOpsFunctionBase { }

    [Function("handleOps")]
    public class HandleOpsFunctionBase : FunctionMessage
    {
        [Parameter("tuple[]", "ops", 1)]
        public virtual List<PackedUserOperation> Ops { get; set; }
        [Parameter("address", "beneficiary", 2)]
        public virtual string Beneficiary { get; set; }
    }

    public partial class IncrementNonceFunction : IncrementNonceFunctionBase { }

    [Function("incrementNonce")]
    public class IncrementNonceFunctionBase : FunctionMessage
    {
        [Parameter("uint192", "key", 1)]
        public virtual BigInteger Key { get; set; }
    }

    public partial class InnerHandleOpFunction : InnerHandleOpFunctionBase { }

    [Function("innerHandleOp", "uint256")]
    public class InnerHandleOpFunctionBase : FunctionMessage
    {
        [Parameter("bytes", "callData", 1)]
        public virtual byte[] CallData { get; set; }
        [Parameter("tuple", "opInfo", 2)]
        public virtual UserOpInfo OpInfo { get; set; }
        [Parameter("bytes", "context", 3)]
        public virtual byte[] Context { get; set; }
    }

    public partial class NonceSequenceNumberFunction : NonceSequenceNumberFunctionBase { }

    [Function("nonceSequenceNumber", "uint256")]
    public class NonceSequenceNumberFunctionBase : FunctionMessage
    {
        [Parameter("address", "", 1)]
        public virtual string ReturnValue1 { get; set; }
        [Parameter("uint192", "", 2)]
        public virtual BigInteger ReturnValue2 { get; set; }
    }

    public partial class SenderCreatorFunction : SenderCreatorFunctionBase { }

    [Function("senderCreator", "address")]
    public class SenderCreatorFunctionBase : FunctionMessage
    {

    }

    public partial class SupportsInterfaceFunction : SupportsInterfaceFunctionBase { }

    [Function("supportsInterface", "bool")]
    public class SupportsInterfaceFunctionBase : FunctionMessage
    {
        [Parameter("bytes4", "interfaceId", 1)]
        public virtual byte[] InterfaceId { get; set; }
    }

    public partial class UnlockStakeFunction : UnlockStakeFunctionBase { }

    [Function("unlockStake")]
    public class UnlockStakeFunctionBase : FunctionMessage
    {

    }

    public partial class WithdrawStakeFunction : WithdrawStakeFunctionBase { }

    [Function("withdrawStake")]
    public class WithdrawStakeFunctionBase : FunctionMessage
    {
        [Parameter("address", "withdrawAddress", 1)]
        public virtual string WithdrawAddress { get; set; }
    }

    public partial class WithdrawToFunction : WithdrawToFunctionBase { }

    [Function("withdrawTo")]
    public class WithdrawToFunctionBase : FunctionMessage
    {
        [Parameter("address", "withdrawAddress", 1)]
        public virtual string WithdrawAddress { get; set; }
        [Parameter("uint256", "withdrawAmount", 2)]
        public virtual BigInteger WithdrawAmount { get; set; }
    }

    public partial class AccountDeployedEventDTO : AccountDeployedEventDTOBase { }

    [Event("AccountDeployed")]
    public class AccountDeployedEventDTOBase : IEventDTO
    {
        [Parameter("bytes32", "userOpHash", 1, true )]
        public virtual byte[] UserOpHash { get; set; }
        [Parameter("address", "sender", 2, true )]
        public virtual string Sender { get; set; }
        [Parameter("address", "factory", 3, false )]
        public virtual string Factory { get; set; }
        [Parameter("address", "paymaster", 4, false )]
        public virtual string Paymaster { get; set; }
    }

    public partial class BeforeExecutionEventDTO : BeforeExecutionEventDTOBase { }

    [Event("BeforeExecution")]
    public class BeforeExecutionEventDTOBase : IEventDTO
    {
    }

    public partial class DepositedEventDTO : DepositedEventDTOBase { }

    [Event("Deposited")]
    public class DepositedEventDTOBase : IEventDTO
    {
        [Parameter("address", "account", 1, true )]
        public virtual string Account { get; set; }
        [Parameter("uint256", "totalDeposit", 2, false )]
        public virtual BigInteger TotalDeposit { get; set; }
    }

    public partial class EIP712DomainChangedEventDTO : EIP712DomainChangedEventDTOBase { }

    [Event("EIP712DomainChanged")]
    public class EIP712DomainChangedEventDTOBase : IEventDTO
    {
    }

    public partial class PostOpRevertReasonEventDTO : PostOpRevertReasonEventDTOBase { }

    [Event("PostOpRevertReason")]
    public class PostOpRevertReasonEventDTOBase : IEventDTO
    {
        [Parameter("bytes32", "userOpHash", 1, true )]
        public virtual byte[] UserOpHash { get; set; }
        [Parameter("address", "sender", 2, true )]
        public virtual string Sender { get; set; }
        [Parameter("uint256", "nonce", 3, false )]
        public virtual BigInteger Nonce { get; set; }
        [Parameter("bytes", "revertReason", 4, false )]
        public virtual byte[] RevertReason { get; set; }
    }

    public partial class SignatureAggregatorChangedEventDTO : SignatureAggregatorChangedEventDTOBase { }

    [Event("SignatureAggregatorChanged")]
    public class SignatureAggregatorChangedEventDTOBase : IEventDTO
    {
        [Parameter("address", "aggregator", 1, true )]
        public virtual string Aggregator { get; set; }
    }

    public partial class StakeLockedEventDTO : StakeLockedEventDTOBase { }

    [Event("StakeLocked")]
    public class StakeLockedEventDTOBase : IEventDTO
    {
        [Parameter("address", "account", 1, true )]
        public virtual string Account { get; set; }
        [Parameter("uint256", "totalStaked", 2, false )]
        public virtual BigInteger TotalStaked { get; set; }
        [Parameter("uint256", "unstakeDelaySec", 3, false )]
        public virtual BigInteger UnstakeDelaySec { get; set; }
    }

    public partial class StakeUnlockedEventDTO : StakeUnlockedEventDTOBase { }

    [Event("StakeUnlocked")]
    public class StakeUnlockedEventDTOBase : IEventDTO
    {
        [Parameter("address", "account", 1, true )]
        public virtual string Account { get; set; }
        [Parameter("uint256", "withdrawTime", 2, false )]
        public virtual BigInteger WithdrawTime { get; set; }
    }

    public partial class StakeWithdrawnEventDTO : StakeWithdrawnEventDTOBase { }

    [Event("StakeWithdrawn")]
    public class StakeWithdrawnEventDTOBase : IEventDTO
    {
        [Parameter("address", "account", 1, true )]
        public virtual string Account { get; set; }
        [Parameter("address", "withdrawAddress", 2, false )]
        public virtual string WithdrawAddress { get; set; }
        [Parameter("uint256", "amount", 3, false )]
        public virtual BigInteger Amount { get; set; }
    }

    public partial class UserOperationEventEventDTO : UserOperationEventEventDTOBase { }

    [Event("UserOperationEvent")]
    public class UserOperationEventEventDTOBase : IEventDTO
    {
        [Parameter("bytes32", "userOpHash", 1, true )]
        public virtual byte[] UserOpHash { get; set; }
        [Parameter("address", "sender", 2, true )]
        public virtual string Sender { get; set; }
        [Parameter("address", "paymaster", 3, true )]
        public virtual string Paymaster { get; set; }
        [Parameter("uint256", "nonce", 4, false )]
        public virtual BigInteger Nonce { get; set; }
        [Parameter("bool", "success", 5, false )]
        public virtual bool Success { get; set; }
        [Parameter("uint256", "actualGasCost", 6, false )]
        public virtual BigInteger ActualGasCost { get; set; }
        [Parameter("uint256", "actualGasUsed", 7, false )]
        public virtual BigInteger ActualGasUsed { get; set; }
    }

    public partial class UserOperationPrefundTooLowEventDTO : UserOperationPrefundTooLowEventDTOBase { }

    [Event("UserOperationPrefundTooLow")]
    public class UserOperationPrefundTooLowEventDTOBase : IEventDTO
    {
        [Parameter("bytes32", "userOpHash", 1, true )]
        public virtual byte[] UserOpHash { get; set; }
        [Parameter("address", "sender", 2, true )]
        public virtual string Sender { get; set; }
        [Parameter("uint256", "nonce", 3, false )]
        public virtual BigInteger Nonce { get; set; }
    }

    public partial class UserOperationRevertReasonEventDTO : UserOperationRevertReasonEventDTOBase { }

    [Event("UserOperationRevertReason")]
    public class UserOperationRevertReasonEventDTOBase : IEventDTO
    {
        [Parameter("bytes32", "userOpHash", 1, true )]
        public virtual byte[] UserOpHash { get; set; }
        [Parameter("address", "sender", 2, true )]
        public virtual string Sender { get; set; }
        [Parameter("uint256", "nonce", 3, false )]
        public virtual BigInteger Nonce { get; set; }
        [Parameter("bytes", "revertReason", 4, false )]
        public virtual byte[] RevertReason { get; set; }
    }

    public partial class WithdrawnEventDTO : WithdrawnEventDTOBase { }

    [Event("Withdrawn")]
    public class WithdrawnEventDTOBase : IEventDTO
    {
        [Parameter("address", "account", 1, true )]
        public virtual string Account { get; set; }
        [Parameter("address", "withdrawAddress", 2, false )]
        public virtual string WithdrawAddress { get; set; }
        [Parameter("uint256", "amount", 3, false )]
        public virtual BigInteger Amount { get; set; }
    }

    public partial class DelegateAndRevertError : DelegateAndRevertErrorBase { }

    [Error("DelegateAndRevert")]
    public class DelegateAndRevertErrorBase : IErrorDTO
    {
        [Parameter("bool", "success", 1)]
        public virtual bool Success { get; set; }
        [Parameter("bytes", "ret", 2)]
        public virtual byte[] Ret { get; set; }
    }

    public partial class FailedOpError : FailedOpErrorBase { }

    [Error("FailedOp")]
    public class FailedOpErrorBase : IErrorDTO
    {
        [Parameter("uint256", "opIndex", 1)]
        public virtual BigInteger OpIndex { get; set; }
        [Parameter("string", "reason", 2)]
        public virtual string Reason { get; set; }
    }

    public partial class FailedOpWithRevertError : FailedOpWithRevertErrorBase { }

    [Error("FailedOpWithRevert")]
    public class FailedOpWithRevertErrorBase : IErrorDTO
    {
        [Parameter("uint256", "opIndex", 1)]
        public virtual BigInteger OpIndex { get; set; }
        [Parameter("string", "reason", 2)]
        public virtual string Reason { get; set; }
        [Parameter("bytes", "inner", 3)]
        public virtual byte[] Inner { get; set; }
    }

    public partial class InvalidShortStringError : InvalidShortStringErrorBase { }
    [Error("InvalidShortString")]
    public class InvalidShortStringErrorBase : IErrorDTO
    {
    }

    public partial class PostOpRevertedError : PostOpRevertedErrorBase { }

    [Error("PostOpReverted")]
    public class PostOpRevertedErrorBase : IErrorDTO
    {
        [Parameter("bytes", "returnData", 1)]
        public virtual byte[] ReturnData { get; set; }
    }

    public partial class ReentrancyGuardReentrantCallError : ReentrancyGuardReentrantCallErrorBase { }
    [Error("ReentrancyGuardReentrantCall")]
    public class ReentrancyGuardReentrantCallErrorBase : IErrorDTO
    {
    }

    public partial class SenderAddressResultError : SenderAddressResultErrorBase { }

    [Error("SenderAddressResult")]
    public class SenderAddressResultErrorBase : IErrorDTO
    {
        [Parameter("address", "sender", 1)]
        public virtual string Sender { get; set; }
    }

    public partial class SignatureValidationFailedError : SignatureValidationFailedErrorBase { }

    [Error("SignatureValidationFailed")]
    public class SignatureValidationFailedErrorBase : IErrorDTO
    {
        [Parameter("address", "aggregator", 1)]
        public virtual string Aggregator { get; set; }
    }

    public partial class StringTooLongError : StringTooLongErrorBase { }

    [Error("StringTooLong")]
    public class StringTooLongErrorBase : IErrorDTO
    {
        [Parameter("string", "str", 1)]
        public virtual string Str { get; set; }
    }



    public partial class BalanceOfOutputDTO : BalanceOfOutputDTOBase { }

    [FunctionOutput]
    public class BalanceOfOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("uint256", "", 1)]
        public virtual BigInteger ReturnValue1 { get; set; }
    }





    public partial class Eip712DomainOutputDTO : Eip712DomainOutputDTOBase { }

    [FunctionOutput]
    public class Eip712DomainOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("bytes1", "fields", 1)]
        public virtual byte[] Fields { get; set; }
        [Parameter("string", "name", 2)]
        public virtual string Name { get; set; }
        [Parameter("string", "version", 3)]
        public virtual string Version { get; set; }
        [Parameter("uint256", "chainId", 4)]
        public virtual BigInteger ChainId { get; set; }
        [Parameter("address", "verifyingContract", 5)]
        public virtual string VerifyingContract { get; set; }
        [Parameter("bytes32", "salt", 6)]
        public virtual byte[] Salt { get; set; }
        [Parameter("uint256[]", "extensions", 7)]
        public virtual List<BigInteger> Extensions { get; set; }
    }

    public partial class GetDepositInfoOutputDTO : GetDepositInfoOutputDTOBase { }

    [FunctionOutput]
    public class GetDepositInfoOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("tuple", "info", 1)]
        public virtual DepositInfo Info { get; set; }
    }

    public partial class GetDomainSeparatorV4OutputDTO : GetDomainSeparatorV4OutputDTOBase { }

    [FunctionOutput]
    public class GetDomainSeparatorV4OutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("bytes32", "", 1)]
        public virtual byte[] ReturnValue1 { get; set; }
    }

    public partial class GetNonceOutputDTO : GetNonceOutputDTOBase { }

    [FunctionOutput]
    public class GetNonceOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("uint256", "nonce", 1)]
        public virtual BigInteger Nonce { get; set; }
    }

    public partial class GetPackedUserOpTypeHashOutputDTO : GetPackedUserOpTypeHashOutputDTOBase { }

    [FunctionOutput]
    public class GetPackedUserOpTypeHashOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("bytes32", "", 1)]
        public virtual byte[] ReturnValue1 { get; set; }
    }



    public partial class GetUserOpHashOutputDTO : GetUserOpHashOutputDTOBase { }

    [FunctionOutput]
    public class GetUserOpHashOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("bytes32", "", 1)]
        public virtual byte[] ReturnValue1 { get; set; }
    }









    public partial class NonceSequenceNumberOutputDTO : NonceSequenceNumberOutputDTOBase { }

    [FunctionOutput]
    public class NonceSequenceNumberOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("uint256", "", 1)]
        public virtual BigInteger ReturnValue1 { get; set; }
    }

    public partial class SenderCreatorOutputDTO : SenderCreatorOutputDTOBase { }

    [FunctionOutput]
    public class SenderCreatorOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("address", "", 1)]
        public virtual string ReturnValue1 { get; set; }
    }

    public partial class SupportsInterfaceOutputDTO : SupportsInterfaceOutputDTOBase { }

    [FunctionOutput]
    public class SupportsInterfaceOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("bool", "", 1)]
        public virtual bool ReturnValue1 { get; set; }
    }






}
